package com.jlpay.openapi.demo.openmerch.change;

import com.jlpay.open.jlpay.sdk.java.model.openmerch.FeeCalcType;
import com.jlpay.open.jlpay.sdk.java.model.openmerch.change.request.RateInfoChangeRequest;
import com.jlpay.open.jlpay.sdk.java.model.openmerch.change.response.RateInfoChangeResponse;
import com.jlpay.open.jlpay.sdk.java.model.openmerch.register.RateInfoDto;
import com.jlpay.open.jlpay.sdk.java.utils.json.JsonUtils;
import com.jlpay.openapi.demo.JlpayOpenApiService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;

/**
 * 商户费率修改
 * @author chenjunhong
 * @date 2024/4/15
 */
public class RateInfoChangeService {
    private static final Logger LOGGER = LoggerFactory.getLogger(RateInfoChangeService.class);

    public static void main(String[] args) {
        RateInfoChangeRequest rateInfoChangeRequest = buildRateInfoChangeRequest();
        RateInfoChangeResponse rateInfoChangeResponse = JlpayOpenApiService.openMerchService()
                .post(rateInfoChangeRequest, RateInfoChangeResponse.class);
        LOGGER.info("商户费率修改响应:{}", JsonUtils.toString(rateInfoChangeResponse));
    }

    private static RateInfoChangeRequest buildRateInfoChangeRequest() {
        RateInfoChangeRequest rateInfoChangeRequest = new RateInfoChangeRequest();
        // 商户号
        rateInfoChangeRequest.setMerchNo("849584358140108");
        // 业务申请编号
        rateInfoChangeRequest.setApplyId("b8659ea518d14c99b78b5ad000a4155a");
        // 费率
        List<RateInfoDto> rateInfoDtoList = new ArrayList<>();
        rateInfoChangeRequest.setRateInfo(rateInfoDtoList);
        RateInfoDto rateInfoDto1 = new RateInfoDto();
        rateInfoDtoList.add(rateInfoDto1);
        rateInfoDto1.setTop("1900");
        rateInfoDto1.setRate("0.45");
        rateInfoDto1.setBottom("0");
        rateInfoDto1.setBaseFee("0");
        rateInfoDto1.setStep("0");
        rateInfoDto1.setMaxAmt("-1");
        rateInfoDto1.setFixed("0");
        rateInfoDto1.setMinAmt("0");
        rateInfoDto1.setBaseAmount("0");
        rateInfoDto1.setFeeCalcType(FeeCalcType.DOMESTIC_DEBIT_CARD);
        RateInfoDto rateInfoDto2 = new RateInfoDto();
        rateInfoDtoList.add(rateInfoDto2);
        rateInfoDto2.setTop("-1");
        rateInfoDto2.setRate("0.55");
        rateInfoDto2.setBottom("0");
        rateInfoDto2.setBaseFee("0");
        rateInfoDto2.setStep("0");
        rateInfoDto2.setMaxAmt("-1");
        rateInfoDto2.setFixed("0");
        rateInfoDto2.setMinAmt("0");
        rateInfoDto2.setBaseAmount("0");
        rateInfoDto2.setFeeCalcType(FeeCalcType.DOMESTIC_CREDIT_CARD);
        return rateInfoChangeRequest;
    }
}
